package com.openlogic.common.logic.log.factory;

import java.util.Objects;
import java.util.concurrent.ConcurrentHashMap;

import org.apache.commons.lang3.StringUtils;

import com.openlogic.common.core.exception.ServiceException;
import com.openlogic.common.logic.log.strategy.RecordDecisionLogStrategy;

/**
 * @ClassName: RecordLogFactory
 * @Description: 记录日志Service工厂类
 * @author weiyongpeng
 * @date 2024年10月9日 上午9:29:01
 */
public class RecordLogFactory {

	private static ConcurrentHashMap<String, RecordDecisionLogStrategy> strategyMap = new ConcurrentHashMap<>();

	/**
	 * 描述：根据name获取对应的handler实现
	 * @Title: getInvokeStrategyMap
	 * @param name
	 * @return
	 * @author weiyongpeng
	 * @date 2024年7月20日 上午8:15:35
	 */
	public static RecordDecisionLogStrategy getInvokeStrategyMap(String name) {
		if (Objects.isNull(strategyMap.get(name))) {
			throw new ServiceException("未匹配到" + name + "对应的处理器，请检查");
		}
		return strategyMap.get(name);
	}

	/**
	 * 描述：注册
	 * @Title: register
	 * @param name
	 * @param handler
	 * @author weiyongpeng
	 * @date 2024年7月20日 上午8:15:48
	 */
	public static void register(String name, RecordDecisionLogStrategy handler) {
		if (StringUtils.isEmpty(name) || null == handler) {
			return;
		}
		strategyMap.put(name, handler);
	}
}
